/*
 *   Copyright (C) Key Bridge Global LLC and/or its affiliates.
 *
 *   This program is free software: you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation, either version 3 of the License, or
 *   (at your option) any later version.
 *
 *   This program is distributed in the hope that it will be useful,
 *   but WITHOUT ANY WARRANTY; without even the implied warranty of
 *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *   GNU General Public License for more details.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package com.keybridgeglobal.wsif;

import com.keybridgeglobal.wsif.enumerated.EnumWsifDatum;
import javax.xml.bind.annotation.*;

/**
 * <p>Java class for coordinate complex type.
 * <p/>
 * <p>The following schema fragment specifies the expected content contained
 * within this class.
 * <p/>
 * <pre>
 * &lt;complexType name="coordinate">
 *   &lt;complexContent>
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
 *       &lt;sequence>
 *       &lt;/sequence>
 *       &lt;attribute name="latitude" use="required" type="{http://www.w3.org/2001/XMLSchema}double" />
 *       &lt;attribute name="longitude" use="required" type="{http://www.w3.org/2001/XMLSchema}double" />
 *       &lt;attribute name="accuracy" use="required" type="{http://www.w3.org/2001/XMLSchema}double" />
 *       &lt;attribute name="altitude" type="{http://www.w3.org/2001/XMLSchema}double" />
 *       &lt;attribute name="altitudeAccuracy" type="{http://www.w3.org/2001/XMLSchema}double" />
 *       &lt;attribute name="heading" type="{http://www.w3.org/2001/XMLSchema}double" />
 *       &lt;attribute name="speed" type="{http://www.w3.org/2001/XMLSchema}double" />
 *       &lt;attribute name="domTimeStamp" type="{http://www.w3.org/2001/XMLSchema}long" />
 *       &lt;attribute name="datum" use="required" type="{}enumWsifDatum" />
 *       &lt;attribute name="elevationModel" type="{http://www.w3.org/2001/XMLSchema}string" />
 *       &lt;attribute name="averageTerrain" type="{http://www.w3.org/2001/XMLSchema}double" />
 *     &lt;/restriction>
 *   &lt;/complexContent>
 * &lt;/complexType>
 * </pre>
 * <p/>
 *
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "coordinate")
@XmlRootElement
public class Coordinate {

  @XmlAttribute(name = "latitude", required = true)
  protected double latitude;
  @XmlAttribute(name = "longitude", required = true)
  protected double longitude;
  @XmlAttribute(name = "accuracy", required = true)
  protected double accuracy;
  @XmlAttribute(name = "altitude")
  protected Double altitude;
  @XmlAttribute(name = "altitudeAccuracy")
  protected Double altitudeAccuracy;
  @XmlAttribute(name = "heading")
  protected Double heading;
  @XmlAttribute(name = "speed")
  protected Double speed;
  @XmlAttribute(name = "domTimeStamp")
  protected Long domTimeStamp;
  @XmlAttribute(name = "datum", required = true)
  protected EnumWsifDatum datum;
  @XmlAttribute(name = "elevationModel")
  protected String elevationModel;
  @XmlAttribute(name = "averageTerrain")
  protected Double averageTerrain;

  /**
   * Gets the value of the latitude property.
   * <p/>
   */
  public double getLatitude() {
    return latitude;
  }

  /**
   * Sets the value of the latitude property.
   * <p/>
   */
  public void setLatitude(double value) {
    this.latitude = value;
  }

  /**
   * Gets the value of the longitude property.
   * <p/>
   */
  public double getLongitude() {
    return longitude;
  }

  /**
   * Sets the value of the longitude property.
   * <p/>
   */
  public void setLongitude(double value) {
    this.longitude = value;
  }

  /**
   * Gets the value of the accuracy property.
   * <p/>
   */
  public double getAccuracy() {
    return accuracy;
  }

  /**
   * Sets the value of the accuracy property.
   * <p/>
   */
  public void setAccuracy(double value) {
    this.accuracy = value;
  }

  /**
   * Gets the value of the altitude property.
   * <p/>
   * @return possible object is {@link Double }
   *
   */
  public Double getAltitude() {
    return altitude;
  }

  /**
   * Sets the value of the altitude property.
   * <p/>
   * @param value allowed object is {@link Double }
   *
   */
  public void setAltitude(Double value) {
    this.altitude = value;
  }

  /**
   * Gets the value of the altitudeAccuracy property.
   * <p/>
   * @return possible object is {@link Double }
   *
   */
  public Double getAltitudeAccuracy() {
    return altitudeAccuracy;
  }

  /**
   * Sets the value of the altitudeAccuracy property.
   * <p/>
   * @param value allowed object is {@link Double }
   *
   */
  public void setAltitudeAccuracy(Double value) {
    this.altitudeAccuracy = value;
  }

  /**
   * Gets the value of the heading property.
   * <p/>
   * @return possible object is {@link Double }
   *
   */
  public Double getHeading() {
    return heading;
  }

  /**
   * Sets the value of the heading property.
   * <p/>
   * @param value allowed object is {@link Double }
   *
   */
  public void setHeading(Double value) {
    this.heading = value;
  }

  /**
   * Gets the value of the speed property.
   * <p/>
   * @return possible object is {@link Double }
   *
   */
  public Double getSpeed() {
    return speed;
  }

  /**
   * Sets the value of the speed property.
   * <p/>
   * @param value allowed object is {@link Double }
   *
   */
  public void setSpeed(Double value) {
    this.speed = value;
  }

  /**
   * Gets the value of the domTimeStamp property.
   * <p/>
   * @return possible object is {@link Long }
   *
   */
  public Long getDomTimeStamp() {
    return domTimeStamp;
  }

  /**
   * Sets the value of the domTimeStamp property.
   * <p/>
   * @param value allowed object is {@link Long }
   *
   */
  public void setDomTimeStamp(Long value) {
    this.domTimeStamp = value;
  }

  /**
   * Gets the value of the datum property.
   * <p/>
   * @return possible object is {@link EnumWsifDatum }
   *
   */
  public EnumWsifDatum getDatum() {
    return datum;
  }

  /**
   * Sets the value of the datum property.
   * <p/>
   * @param value allowed object is {@link EnumWsifDatum }
   *
   */
  public void setDatum(EnumWsifDatum value) {
    this.datum = value;
  }

  /**
   * Gets the value of the elevationModel property.
   * <p/>
   * @return possible object is {@link String }
   *
   */
  public String getElevationModel() {
    return elevationModel;
  }

  /**
   * Sets the value of the elevationModel property.
   * <p/>
   * @param value allowed object is {@link String }
   *
   */
  public void setElevationModel(String value) {
    this.elevationModel = value;
  }

  /**
   * Gets the value of the averageTerrain property.
   * <p/>
   * @return possible object is {@link Double }
   *
   */
  public Double getAverageTerrain() {
    return averageTerrain;
  }

  /**
   * Sets the value of the averageTerrain property.
   * <p/>
   * @param value allowed object is {@link Double }
   *
   */
  public void setAverageTerrain(Double value) {
    this.averageTerrain = value;
  }
}
